/*
*
* 数据的操作模块
* 操作文件中的数据
*
* */

const fs = require("fs");

const filePath = "./db.json";

/*
*
* 获取所有的学生列表
*
* */
exports.findAll = function (callback) {
    fs.readFile(filePath, (err, data) => {
        if (err) {
            return callback(err)
        }
        callback(null, JSON.parse(data).students)
    })
};

/*
*
* 根据id查询学生
*
* */
exports.findById = function (id, callback) {
    fs.readFile(filePath, (err, data) => {
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students;
        var thisStu = students.find(item => {
            return item.id === parseInt(id)
        });
        callback(null, thisStu)
    })
};


/*
*
* 添加保存学生
*
* */
exports.add = function (student, callback) {
    fs.readFile(filePath, "utf8", function (err, data) {
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students;

        // 添加id
        student.id = students[students.length - 1].id + 1;

        students.push(student);

        var newsData = JSON.stringify({
            students: students
        });

        fs.writeFile(filePath, newsData, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
};


/*
*
* 更新学生
*
* */
exports.updateById = function (student, callback) {
    fs.readFile(filePath, "utf8", function (err, data) {
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students;

        student.id = parseInt(student.id)

        // 修改谁  就找谁出来
        var stu = students.find(function (item) {
            return item.id === parseInt(student.id)
        });

        for (var key in student) {
            stu[key] = student[key]
        }

        // 把对象数据转换为字符串
        var fileData = JSON.stringify({
            students: students
        })

        fs.writeFile(filePath, fileData, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
};


/*
*
* 删除学生
*
* */
exports.deleteById = function (id, callback) {
    fs.readFile(filePath, "utf8", (err, data) => {
        if (err) {
            return callback(err)
        }
        const students = JSON.parse(data).students;


        var delId = students.findIndex(item => {
            return item.id === parseInt(id)
        });

        students.splice(delId, 1);

        var fileData = JSON.stringify({
            students: students
        });

        fs.writeFile(filePath, fileData, err => {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
};
